package com.guangyunl.service;

import com.guangyunl.model.Student;
import com.guangyunl.view.StudentView;

import java.util.Scanner;

public class StudentService {
    Scanner scanner = new Scanner(System.in);

    // 选择操作选项
    public void selectOperate(){
        StudentView studentView = new StudentView();
        // 设置循环条件
        boolean running = true;
        while (running){
            System.out.println("-----------------学生管理系统-----------------");
            System.out.println(" 1              添 加 学 生            ");
            System.out.println(" 2              修 改 学 生            ");
            System.out.println(" 3              删 除 学 生            ");
            System.out.println(" 4              查 看 学 生            ");
            System.out.println(" 5              退      出            ");
            System.out.print(" 请选择(1~5): ");
            int select = scanner.nextInt();
            // 消耗回车键
//            scanner.nextLine();
            switch(select){
                case 1:
                    // 添加学生
                    System.out.println("添加学生的逻辑...");
                    studentView.createStuView();
                    break;
                case 2:
                    // 修改学生
                    System.out.println("修改学生的逻辑...");
                    break;
                case 3:
                    // 删除学生
                    System.out.println("删除学生的逻辑...");
                    break;
                case 4:
                    // 查看学生
                    System.out.println("查看学生的逻辑...");
//                    printStu();
                    break;
                case 5:
                    // 退出
                    int result = confirmQuit();
                    if( result == 0){
                        // 退出循环
                        running = false;
                    }else if(result == 1){
                        System.out.println("您已取消退出!");
//                        break;
                    }else {
                        System.out.println("输入错误，请重新输入!");
                    }
                    break;
                default:
                    System.out.println("输入错误，请重新输入!");
            }
        }
        System.out.println("再见，欢迎再来!");
    }

    // 确实是否退出
    public int confirmQuit(){
        int select01;

        boolean result = true;
        do{
            System.out.println("是否退出？按0为退出/按9为取消");
            select01 = scanner.nextInt();
            // 消耗回车键
//        scanner.nextLine();
            if(select01==0){
                return 0;
            }else if (select01==9){
                return 1;
            }else {
                System.out.println("输入错误，请重新输入!");
            }
        }while (result);
        return 2;
    }


    // 添加学生
    public Student[] createStu(Student[] students){
        // 第一次添加创建数组拼接，长度为0+新数组长度
        // 将两个数组合并到新数组中

        // 第二次添加创建新数组，长度为旧数组加新数组
        // 将两个数组合并到新数组中

        addStu(students);
        students = orderStu(students);
//        printStu(students);
        return students;
    }

    // 录入学生信息
    public Student[] addStu(Student[] arr){
//        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < arr.length; i++) {
            arr[i] = new Student();  // 确保每个元素初始化为一个新的 Student 对象
            /*
            在 createStu 方法中，每次调用 nextInt() 或 next() 时，
            Scanner 会消耗换行符或空格，
            可能会导致后续的输入问题。建
            议在使用 nextInt() 后，
            调用 scanner.nextLine() 来消耗掉换行符，以避免输入错误。
             */

            System.out.print("请输入学生学号: ");
            arr[i].setSid(scanner.nextInt());

            System.out.print("请输入学生姓名: ");
            arr[i].setName(scanner.next());

            System.out.print("请输入学生年龄: ");
            arr[i].setAge(scanner.nextInt());

            System.out.print("请输入学生性别: ");
            arr[i].setSex(scanner.next());
        }
        return arr;
    }

    // 依据学号给学生排序
    public Student[] orderStu(Student[] arr){
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = 0; j < arr.length-1-i; j++) {
                if(arr[j].getSid() > arr[j+1].getSid()){
                    Student temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        return arr;
    }


    // 修改学生



    // 删除学生



    // 查看学生


    // 显示学生信息
    public  void printStu(Student[] arr){

        System.out.println("============================================");
        System.out.println("学号          姓名          年龄          性别" );
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i].getSid()+ "           " + arr[i].getName() + "            " + arr[i].getAge()+ "          " + arr[i].getSex());
        }
        System.out.println("============================================");

    }
}
